package com.nl.model.exception;

/**
 * 异常工厂类.
 *
 * @author breggor
 */
public class ExceptionFactory {

    /**
     * 创建业务处理异常.
     *
     * @param message 错误信息
     * @return BizProcessException
     */
    public static BizProcessException bizProcessException(final String message) {
        return new BizProcessException(message);
    }

    /**
     * 创建业务处理异常.
     *
     * @param message 错误信息
     * @param code    错误码
     * @return BizProcessException
     */
    public static BizProcessException bizProcessException(final String message, final int code) {
        return new BizProcessException(message, code);
    }

    /**
     * 创建系统异常.
     *
     * @param message 错误信息
     * @return SystemException
     */
    public static SystemException systemException(final String message) {
        return new SystemException(message);
    }

    /**
     * 创建系统异常.
     *
     * @param message 错误信息
     * @param code    错误码
     * @return SystemException
     */
    public static SystemException systemException(final String message, final int code) {
        return new SystemException(message, code);
    }

    /**
     * 创建系统异常.
     *
     * @param message 错误信息
     * @param e       异常
     * @return SystemException
     */
    public static SystemException systemException(final String message, final Throwable e) {
        return new SystemException(message, e);
    }

    /**
     * 创建系统异常.
     *
     * @param message 错误信息
     * @param e       异常
     * @param code    错误码
     * @return SystemException
     */
    public static SystemException systemException(final String message, final Throwable e, final int code) {
        return new SystemException(message, e, code);
    }

    /**
     * 创建检查异常.
     *
     * @param message 错误信息
     * @return ParamCheckException
     */
    public static ParamCheckException paramCheckException(final String message) {
        return new ParamCheckException(message);
    }

    /**
     * 创建检查异常.
     *
     * @param message 错误信息
     * @param code    错误码
     * @return ParamCheckException
     */
    public static ParamCheckException paramCheckException(final String message, final int code) {
        return new ParamCheckException(message, code);
    }

    /**
     * 创建检查异常.
     *
     * @param message 错误信息
     * @param e       异常
     * @return ParamCheckException
     */
    public static ParamCheckException paramCheckException(final String message, final Throwable e) {
        return new ParamCheckException(message, e);
    }

    /**
     * 创建检查异常.
     *
     * @param message 错误信息
     * @param e       异常
     * @param code    错误码
     * @return ParamCheckException
     */
    public static ParamCheckException paramCheckException(final String message, final Throwable e, final int code) {
        return new ParamCheckException(message, e, code);
    }
}
